function mousePressed(){

    //ロード中ならマウス操作なし
    if (loading){
        return false;
    }

    //クリックされたcell
    var clicked_cell;
    //クリックされた軸
    var clicked_axis;
    //直前にフォーカス差れていた軸(クリック前に左上-右下をさしていた軸)
    var focused_axis;
    //クリック前に上-下をさしていた軸
    var vertical_axis;
    //直前に右上-左下をさしていた軸
    var third_axis;
    //中心のセル
    var center_cell;
    //軸の順序(id)
    var axis_order = [];

    //コンテンツのクリックによる軸変更
    //クリックされたオブジェクトが真ん中になるように全体を移動(ToDo)
    var focused_axis_no;
    var clicked_axis_no;
    jQuery.each(axises, function(i, axis){
        //直前にフォーカスされていた軸の取得
        if (axis.focus) {
            focused_axis = axis;
            focused_axis_no = i;
        }
        axis_order.push(axis.aid);
        jQuery.each(axis.cells, function(j, cell){
            if (cell && cell.onmouse) {
                clicked_cell = cell;
                clicked_axis = axis;
                clicked_axis_no = i;
            }
        });
    });


    vertical_axis = axises[focused_axis_no-1];
    third_axis = axises[focused_axis_no-2];

    if (next_axis_clicked == false && next_contents_clicked == false) {
        //クリックされたセルが存在する
        if (clicked_cell) {
            var cid = clicked_cell.data.cid;
            var aid = clicked_axis.aid;
            var url = clicked_cell.data.detail;
            //var window_obj = window.open(url, null);
            //サーバにログを飛ばす#デバッグフラグで分岐させると良い
            //中心のセルなら例外的にaid->0にセット
            if (clicked_cell.is_center) {
                aid = 0;
            }
            logger.ConnectToServerBySendLog(aid, cid, 0);
            logger.ConnectToServerByClickLog(cid);
            //書籍情報を下部に表示
            //display_bookinfo(clicked_cell);
        //console.log(window_obj);
        }else{
            //軸変更ボタンによる軸の変更
            var symbol_onmouse_flag = false;
            var change_to_axis;
            jQuery.each(axis_symbols, function(j, symbol){
                if (symbol.onmouse) {
                    symbol_onmouse_flag = true;
                    change_to_axis = symbol.axis;
                    //変更先の軸をクリックされた軸とする
                    clicked_axis = change_to_axis;
                }
            });

            //軸ボードにマウスが乗っているかをチェック
            var board_onmouse_flag = false;
            var clicked_board;
	    var exit_mouse_flag = false;
            jQuery.each(axis_boards, function(j, board){
                if (board.onmouse) {
                    board_onmouse_flag = true;
                    //トグル
                    if(board.axis.hold){
                        board.axis.hold = false;
                    }else{
			//focus軸を固定しようとした場合のみ,例外的に固定しない
			if(board.axis.aid == focused_axis.aid){
			    exit_mouse_flag = true;;
			}else{
			    board.axis.hold = true;
			}
                        
                    }
                    clicked_board = board;
                }
            });
	    
	    //focus軸を固定することは無い
	    if(exit_mouse_flag){
		return false;
	    }


            if(symbol_onmouse_flag){
                //軸シンボルによる軸変更

                //中心コンテンツの取得
                jQuery.each(focused_axis.cells, function(j, cell){
                    if (cell.is_center) {
                        center_cell = cell;
                    }
                });
		
		//クリックした軸がすでに固定されている場合,falseを返して関数を抜ける
		if(clicked_axis.hold == true){
		    return false;
		}
		
		
		//３軸の組み合わせをログに保存するための配列
		//[1st軸ID,holdしているか？,2nd軸ID,holdしているか？,3rd軸ID,holdしているか？]
		//[99,false,3,true,A11111,true]といった形
		var show_axis_array = ["",false,"",false,"",false];

                //すべて１つ移動させれば良いので、常に中心軸をclicked_axisにして、左上から右下をfocused_axisにする
		//軸固定条件より、orderを変化させる
		// 
		var exist_hold_order = axis_order;
		//垂直の軸が固定されているならば、orderよりその要素を抜く
		var vertical_aid = undefined;
		var third_aid = undefined;
		//console.log(vertical_axis);
		
		if(vertical_axis != undefined){
		    if(vertical_axis.hold){
			//console.log("xxx");
			var tmp_order = [];
			jQuery.each(exist_hold_order, function(j, aid){
					if (aid != vertical_axis.aid) {
					    tmp_order.push(aid);
					}
				    });
			vertical_aid = vertical_axis.aid;
			show_axis_array[3] = true;
			exist_hold_order = tmp_order;
			//console.log("test: " + exist_hold_order);
		    }
		}
		
		//右上-左下の軸が固定されているならば、orderよりその要素を抜く
		if(third_axis != undefined){
		    
		    if(third_axis.hold){
			//console.log("bbb");
			var tmp_order = [];
			jQuery.each(exist_hold_order, function(j, aid){
					if (aid != third_axis.aid) {
					    tmp_order.push(aid);
					}
				    });
			third_aid = third_axis.aid;
			show_axis_array[5] = true;
			exist_hold_order = tmp_order;
		    }
		}
		
		exist_hold_order = exist_hold_order.reverse();		

		var center_cell_index = 0;
		jQuery.each(exist_hold_order, function(j,aid){
			    if(aid == clicked_axis.aid){
				center_cell_index = j;
			    };
			    });
		//center_cellの直後に挿入するので、third_aidを先に
		if(third_aid != undefined){
		    exist_hold_order.splice(center_cell_index + 1,0,third_aid);
		}
                if(vertical_aid != undefined){
                    exist_hold_order.splice(center_cell_index + 1,0,vertical_aid);
                }
		axis_order = exist_hold_order;
		
		show_axis_array[0] = exist_hold_order[center_cell_index];
		show_axis_array[2] = exist_hold_order[center_cell_index+1];
		show_axis_array[4] = exist_hold_order[center_cell_index+2];
		
		//console.log(show_axis_array);

                //console.log(axis_order);


                //サーバへの通信
                ConnectToServerByChangeAxis(clicked_axis.aid, center_cell.data.cid, true, query, get_hold_ids_str(), axis_order);
		//console.log("in mouse:" + axis_order);
                
		
                //軸変更のログを送信
                logger.change_axis_log(clicked_axis.aid,center_cell.data.cid,show_axis_array);

                // 各軸の目標角度にセット&フォーカス
                jQuery.each(axises, function(k, axis){
                    //クリックされた軸をFOCUS
                    if (axis == clicked_axis) {
                        axis.focus = true;
                    }
                    else {
                        axis.focus = false;
                    }
                    //目標位置を計算してセット
                    axis.setToTheta(focused_axis.axis_no, clicked_axis.axis_no);
                });

            }else if(board_onmouse_flag){
                //中心コンテンツの取得
                jQuery.each(focused_axis.cells, function(j, cell){
                    if (cell.is_center) {
                        center_cell = cell;
                    }
                });
                //絞り込み
                //ロックの状態をサーバに送る

                /*
                var hold_axes = [];
                var send_hold_axes = "";
                jQuery.each(axis_boards, function(j, board){
                    if (board.axis.hold) {
                        hold_axes.push(board.axis.aid);
                    }
                });
                if (hold_axes.length != 0) {
                    send_hold_axes = hold_axes.join("_");
                }
                */
                //console.log(clicked_board.axis.name);
		
		//クリックした軸がフォーカス軸でなければ軸固定の通信を行う
		//jQuery.each(axis_boards, function(j, board){
                //    if (board.axis.hold) {
		//	console.log(board.axis);
                //        if(board.axis.aid != focused_axis.aid){
		//	    console.log("hogeeeeee");
			    //return false;
			    ConnectToServerByHoldAxis(focused_axis.aid, center_cell.data.cid, true, query, get_hold_ids_str());
		//	}
                //    }
		//});
                

		//if(clicked_axis.focus){
		//    return false;
		//    console.log("focus!!!!!!!");
		//}
		
                
            }

        }
    }else if(next_contents_clicked){
        mousewheeled(1);
    }
    else {
        //中心コンテンツの取得
        jQuery.each(focused_axis.cells, function(j, cell){
            if (cell.is_center) {
                center_cell = cell;
            }
        });

        // 回転
        if (clicked_cell) {
            //すべて１つ移動させれば良いので、常に中心軸をclicked_axisにして、左上から右下をfocused_axisにする

            //サーバへの通信
            //ConnectToServerByChangeAxis(clicked_axis.aid, center_cell.data.cid, true, query);
            ConnectToServerByChangeAxis(vertical_axis.aid, center_cell.data.cid, true, query,get_hold_ids_str());

            //ログを飛ばす
            //logger.ConnectToServerBySendLog(clicked_axis.aid, center_cell.data.cid, 1);

            // 各軸の目標角度にセット&フォーカス
            jQuery.each(axises, function(k, axis){
                //クリックされた軸をFOCUS
                if (axis == clicked_axis) {
                    axis.focus = true;
                }
                else {
                    axis.focus = false;
                }

                //クリックされた軸の前後にある軸以外は非表示にする


                //目標位置を計算してセット
                //console.log(focused_axis,vertical_axis);
                //axis.setToTheta(focused_axis.axis_no, clicked_axis.axis_no);
                axis.setToTheta(focused_axis.axis_no, vertical_axis.axis_no);
            });

        }
    }
}

function mousewheeled(delta){

    //ロード中ならマウス操作なし
    if (loading){
        return false;
    }

    //軸切り替えの場所にあるかどうかをチェック
    //軸切り替えか、コンテンツの移動を行う

    //現在のマウスの位置を取得
    var move_axis;
    var move_axis_no;
    jQuery.each(axises, function(i, axis){
        jQuery.each(axis.cells, function(j, cell){
            if (cell && cell.onmouse) {
                move_axis = cell.axis;
                move_axis_no = j;
            //console.log('test');
            //console.log(move_axis.axis_no);
            }
        });
    });

    if(move_axis == null){
        //どの軸にもマウスが載っていない場合は何もしない
        can_mouse_wheel = true;
        animation_stop = true;
        return false;
    //どの軸にもマウスが載っていない場合は左上から右下を動かす
    //jQuery.each(axises, function(i, axis){
    //    if (axis.axis_no == 0) {
    //        move_axis = axis;
    //    }
    //});
    }

    //focus軸の取得 - マウスの位置によって移動する軸を決め、その軸オブジェクトを取得する
    //jQuery.each(axises, function(i, axis){
    //    if (axis.focus) {
    //        focused_axis = axis;
    //    }
    //});
    //console.log(mod(move_axis_no - 1,axises.length));
    //focused_axis = axises[mod(move_axis_no - 1,axises.length )];
    //console.log(focused_axis);

    //var cells = focused_axis.cells
    var cells = move_axis.cells;
    //中心コンテンツの取得

    var center_cell_index;
    jQuery.each(move_axis.cells, function(j, cell){
        if (cell.is_center) {
            center_cell_index = j;
        }
    });

    var cell;
    var direction;
    if (delta > 0) {
        cell = cells[2];
        direction = 0;
    }
    else {
        cell = cells[1];
        direction = 1;
    }

    //ここでcellがからだったら移動させない
    if(cell.data.body == ""){
        can_mouse_wheel = true;
        animation_stop = true;
        return false;
    }

    ConnectToServerBySlideContents(move_axis.aid, cell.data.cid, true, query, move_axis.dist_from_focus(),get_hold_ids_str());

    //ログの保存
    logger.slide_axis_log(move_axis.aid, direction, cell.data.cid);

    //動かさない軸ボードを削除
    axis_boards=  jQuery.map(axis_boards, function(board,i){
        //nullを返すとその要素は削除される
        var aid = board.axis.aid;
        return (aid == move_axis.aid) ? board : null;
    });
   

    //軸の移動 - 座標に関しては変える必要はなさそう？ifの中身を移動する軸とする
    jQuery.each(axises, function(i, axis){
        //
        if (axis === move_axis) {
            axis.slide = true;

            var destination = null;
            if (delta > 0) {
                destination = [[x(spiral_x(axis.theta + 0 * Math.PI)), y(spiral_y(axis.theta + 0 * Math.PI))], [x(spiral_x(axis.theta + 2 * Math.PI)), y(spiral_y(axis.theta + 2 * Math.PI))], [x(0.0), y(0.0)], [x(spiral_x(axis.theta + 4 * Math.PI)), y(spiral_y(axis.theta + 4 * Math.PI))], [x(spiral_x(axis.theta + 1 * Math.PI)), y(spiral_y(axis.theta + 1 * Math.PI))]];
            }
            else {
                destination = [[x(spiral_x(axis.theta + 1 * Math.PI)), y(spiral_y(axis.theta + 1 * Math.PI))], [x(0.0), y(0.0)], [x(spiral_x(axis.theta + 3 * Math.PI)), y(spiral_y(axis.theta + 3 * Math.PI))], [x(spiral_x(axis.theta + 0 * Math.PI)), y(spiral_y(axis.theta + 0 * Math.PI))], [x(spiral_x(axis.theta + 5 * Math.PI)), y(spiral_y(axis.theta + 5 * Math.PI))]];
            }


            var destination_delta = new Array;
            jQuery.each(axis.cells, function(i, cell1){
                //移動距離の差分を算出する
                destination_delta[i] = [0, 0];
                cell1.dx = (destination[i][0] - cell1.x) / 20.0;
                cell1.dy = (destination[i][1] - cell1.y) / 20.0;
                cell1.to_x = destination[i][0];
                cell1.to_y = destination[i][1];
            });

        }
        else {
            //移動する軸でなければ非表示
            axis.display = false;
        }
    });
}
